package cn.virens.database.mysql.model.base;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Table;

import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.virens.database.common.BaseModel;

@Table(name = "base_upload_image")
public class BaseUploadImage extends BaseModel implements Serializable {
	/**
	 * 图片编码
	 */
	private String code;

	/**
	 * 图片路径
	 */
	private String path;

	/**
	 * 略缩图路径
	 */
	private String thumb;

	/**
	 * 图片名
	 */
	private String name;

	/**
	 * 图片大小
	 */
	private Long length;

	/**
	 * 图片格式
	 */
	@Column(name = "mime_type")
	private String mimeType;

	private static final long serialVersionUID = 1L;

	/**
	 * 获取图片编码
	 *
	 * @return code - 图片编码
	 */
	public String getCode() {
		return code;
	}

	/**
	 * 设置图片编码
	 *
	 * @param code 图片编码
	 */
	public void setCode(String code) {
		this.code = StrUtil.trim(code);
	}

	/**
	 * 获取图片路径
	 *
	 * @return path - 图片路径
	 */
	public String getPath() {
		return path;
	}

	/**
	 * 获取图片绝对路径
	 * 
	 * @param  rootPath 绝对路径
	 * @return
	 */
	public String getPath(String rootPath) {
		return rootPath + path;
	}

	/**
	 * 设置图片路径
	 *
	 * @param path 图片路径
	 */
	public void setPath(String path) {
		this.path = StrUtil.trim(path);
	}

	/**
	 * 获取略缩图路径
	 *
	 * @return thumb - 略缩图路径
	 */
	public String getThumb() {
		return thumb;
	}

	/**
	 * 获取略缩图绝对路径
	 * 
	 * @param  rootPath 绝对路径
	 * @return
	 */
	public String getThumb(String rootPath) {
		return rootPath + thumb;
	}

	/**
	 * 设置略缩图路径
	 *
	 * @param thumb 略缩图路径
	 */
	public void setThumb(String thumb) {
		this.thumb = thumb;
	}

	/**
	 * 设置略缩图路径
	 *
	 * @param thumb 略缩图路径
	 */
	public void setThumb0(String thumb) {
		this.setThumb(thumb + "-thumb");
	}

	/**
	 * 获取图片名
	 *
	 * @return name - 图片名
	 */
	public String getName() {
		return name;
	}

	/**
	 * 设置图片名
	 *
	 * @param name 图片名
	 */
	public void setName(String name) {
		this.name = StrUtil.trim(name);
	}

	/**
	 * 获取图片大小
	 *
	 * @return length - 图片大小
	 */
	public Long getLength() {
		return length;
	}

	/**
	 * 设置图片大小
	 *
	 * @param length 图片大小
	 */
	public void setLength(Long length) {
		this.length = length;
	}

	/**
	 * 获取图片格式
	 *
	 * @return mime_type - 图片格式
	 */
	public String getMimeType() {
		return mimeType;
	}

	/**
	 * 设置图片格式
	 *
	 * @param mimeType 图片格式
	 */
	public void setMimeType(String mimeType) {
		this.mimeType = StrUtil.trim(mimeType);
	}

	public String contentType() {
		return StrUtil.emptyToDefault(mimeType, "image/png");
	}

	public String contentName() {
		return URLUtil.encode(name);
	}

	public String contentLength() {
		return Long.toString(length);
	}
}